<?php
session_start();
require_once '../model/Epoca.php';
class EpocaDLO {

    private $epocas;
    private static $epocaDLO;

    private function __construct() {
    }

    /**
     * @method EpocaDLO getInstance() para obter uma única instância do controlador
     * @return EpocaDLO
     */
    public static function getInstance() {
        if (!isset(self::$epocaDLO)) {
            if (!isset($_SESSION['epocaDLO'])) {
                $_SESSION['epocaDLO'] = serialize(new EpocaDLO());
            }
            self::$epocaDLO = unserialize($_SESSION['epocaDLO']);
        }
        return self::$epocaDLO;
    }

    public function cadastrar(&$ano, &$dia, &$mes, &$seculo) {
        $epoca = new Epoca();
        $epoca->setAno($ano);
        $epoca->setDia($dia);
        $epoca->setMes($mes);
        $epoca->setSeculo($seculo);
        $epoca->cadastrar();
    }

    public function listar() {
        $result = &Epoca::listar();
        $resultado = array();
        for ($i = 0; $i < sizeof($result); $i++) {
            $row = array();
            $row['cod_epoca'] = &$result[$i]->getCod_epoca();
            $row['seculo'] = &$result[$i]->getSeculo();
            $row['ano'] = &$result[$i]->getAno();
            $row['mes'] = &$result[$i]->getMes();
            $row['dia'] = &$result[$i]->getDia();
            $resultado[$i] = &$row;
            unset($row);
        }
        return $resultado;
    }

    public function excluir(&$cod_epoca) {
        $epoca = null;
        if (isset($this->epocas[$cod_epoca])) {
            $epoca = &$this->epocas[$cod_epoca];
        } else {
            $epoca = &Epoca::consultar($cod_epoca);
            $this->epocas[$cod_epoca] = &$epoca;
            $_SESSION['epocaDLO'] = serialize($this);
        }
        if ($epoca->isVinculado() == 1) {
            throw new Exception("Recurso vinculado");
        }
        $epoca->excluir();
        unset($this->epocas[$cod_epoca]);
        $_SESSION['epocaDLO'] = serialize($this);
    }

    public function alterar(&$cod_epoca, &$campo_id, &$campo_valor) {
        $epoca = null;
        if (isset($this->epocas[$cod_epoca])) {
            $epoca = &$this->epocas[$cod_epoca];
        } else {
            $epoca = &Epoca::consultar($cod_epoca);
            $this->epocas[$cod_epoca] = &$epoca;
            $_SESSION['epocaDLO'] = serialize($this);
        }
        if ($epoca->isVinculado() == 1) {
            throw new Exception("Recurso vinculado");
        }
        $epoca->alterarCampo($campo_id, $campo_valor);
        $this->epocas[$cod_epoca] = &$epoca;
        $_SESSION['epocaDLO'] = serialize($this);
    }

    public function consultar(&$cod_epoca) {
        $epoca = null;
        if (isset($this->epocas[$cod_epoca])) {
            $epoca = &$this->epocas[$cod_epoca];
        } else {
            $epoca = &Epoca::consultar($cod_epoca);
            $this->epocas[$cod_epoca] = &$epoca;
            $_SESSION['epocaDLO'] = serialize($this);
        }
        $row = array();
        $row['cod_epoca'] = &$epoca->getCod_epoca();
        $row['seculo'] = &$epoca->getSeculo();
        $row['ano'] = &$epoca->getAno();
        $row['mes'] = &$epoca->getMes();
        $row['dia'] = &$epoca->getDia();
        $row['vinculado'] = &$epoca->isVinculado();
        return $row;
    }
}
?>